/**
 * @file lv_custom_focus.h
 * @brief 自定义 LVGL 焦点控制模块
 * 支持通过上下左右键控制界面焦点，适用于 LVGL 8.3 版本
 */

#ifndef LV_CUSTOM_FOCUS_H
#define LV_CUSTOM_FOCUS_H

#include "lvgl/lvgl.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 * 初始化自定义焦点控制模块
 * @param max_controls 最大控件数量
 */
void lv_custom_focus_init(uint8_t max_controls);

/**
 * 添加控件到焦点管理系统
 * @param obj 当前控件
 * @param up 向上键对应的目标控件
 * @param down 向下键对应的目标控件
 * @param left 向左键对应的目标控件
 * @param right 向右键对应的目标控件
 */
void lv_custom_focus_add_control(lv_obj_t *obj, 
                                lv_obj_t *up, 
                                lv_obj_t *down, 
                                lv_obj_t *left, 
                                lv_obj_t *right);

/**
 * 设置焦点组和回调函数
 * @param group 要设置的焦点组
 */
void lv_custom_focus_set_group(lv_group_t *group);

/**
 * 设置初始焦点控件
 * @param obj 要设置为焦点的控件
 */
void lv_custom_focus_set_initial_focus(lv_obj_t *obj);

/**
 * 按键读取函数，需在输入设备驱动中注册
 * @param drv 输入设备驱动
 * @param data 输入数据
 * @return false
 */
bool lv_custom_focus_keypad_read(lv_indev_drv_t *drv, lv_indev_data_t *data);

#ifdef __cplusplus
}
#endif

#endif // LV_CUSTOM_FOCUS_H